package com.fkcai.hansoul.service;

import com.fkcai.hansoul.model.vo.follow.UserListVo;

/**
 * 用户关注业务逻辑接口
 */
public interface UserFollowService {
	/**
	 * 用户关注方法
	 *
	 * @param followerUserId 关注者 ID
	 * @param followedUserId 被关注者 ID
	 */
	boolean followUser (Integer followerUserId, Integer followedUserId);
	
	/**
	 * 取消关注方法
	 *
	 * @param followerUserId 关注者 ID
	 * @param followedUserId 被关注者 ID
	 */
	boolean unfollowUser (Integer followerUserId, Integer followedUserId);
	
	/**
	 * 获取用户关注人数
	 *
	 * @param userId 用户 id
	 */
	Integer getFollowingCount (Integer userId);
	
	/**
	 * 获取用户粉丝数
	 *
	 * @param userId 用户 id
	 */
	Integer getFansCount (Integer userId);
	
	/**
	 * 获取相互关注人数
	 *
	 * @param userId 用户 id
	 */
	Integer getMutualFollowingCount (Integer userId);
	
	/**
	 * 获取用户关注列表
	 * @param userId 用户 id
	 */
	UserListVo getFollowingUsersList (Integer userId);
	
	/**
	 * 获取粉丝列表
	 * @param userId 用户 id
	 */
	UserListVo getFansUsersList (Integer userId);
	
	/**
	 * 获取互关列表
	 * @param userId 用户 id
	 */
	UserListVo getMutualFollowingUsersList (Integer userId);
}
